sequenceDiagram

  participant Requestor
  participant ReqDT as Data Transfer Module <br /> (Requestor)
  participant ReqSC as Scheduler  <br /> (Requestor)
  participant ReqGS as Graphsync  <br /> (Requestor)
  participant ResGS as Graphsync  <br /> (Responder)
  participant ResSC as Scheduler  <br /> (Responder)
  participant ResDT as Data Transfer Module <br /> (Responder)
  participant Responder

  Note over Requestor,ReqGS: One system. Likely A Client
  Note over ResGS,Responder: One system. Likely A Miner

  Requestor ->> ReqDT : Initiate Push
  ReqDT ->> ReqSC : Schedule Transfer
  ReqDT ->> ResDT : Send Data Transfer Request
  ResDT ->> Responder : Validate Push Request
  Responder ->> ResDT : Push Request validated
  ResDT ->> ResSC : Schedule Transfer
  ResSC ->> ResGS : Make Graphsync Request
  ResGS ->> ReqGS : Send Graphsync Request
  ReqGS ->> ReqSC : Verify Transfer Scheduled
  ReqSC ->> ReqGS : Request is scheduled
  ReqGS ->> ResGS : Send Response
  ResGS ->> ResSC : Response Progress (to end)
  ResSC ->> ResDT : Request Complete
  ResDT ->> Responder : Request Completed (if listening)
